<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        /*
            函数优先主要是体现在与var声明提升作比较的情况下，会更先提升函数声明
            而var遇见同名标识符是会忽略当前声明的，函数优先会被同名函数声明覆盖，
            所以切记不要声明同一个函数两次
        */

        // 接下来我们验证一下在块作用域中不同函数声明的使用结果

        // #region
        // foo();  // TypeError: foo is not a function
        // if(true){
        //     function foo(){
        //         console.log("a")
        //     }
        // }else{
        //     function foo(){
        //         console.log("b")
        //     }
        // }
        // #endregion

        // #region
        console.log(foo)    //undefined
        console.log(bar)    //undefined
        if (true) {
            function foo() {
                console.log("a")
            }
        } else {
            function foo() {
                console.log("b")
            }
        }
        foo();  /* if中为true时输出a，反之输出b，在块中的函数声明会等执行之后才进行编译
                    但是这是在ES6之前的特性，如果是在ES6之中，那么会抛出ReferenceError */
        // #endregion

        // console.log(a)    //undefined
        // if(true){
        //     var a = 3;
        // }else{
        //     var a = 5;
        // }

    </script>
</body>

</html>